package com.link.base.base.consumer.dao.mybatis.mapper;

import com.link.base.base.accnt.model.Account;
import com.link.base.base.consumer.model.QidianAccntWeixin;
import com.link.base.wechat.wxplatform.model.WxPlatform;
import com.link.base.wechat.wxsubscriber.model.Subscriber;
import com.link.core.basic.dao.mapper.BasicMapper;

import java.util.List;

/**
 * 微信消费者mapper，用于微信消费者的增删改查
 * @author Li Yang
 */
public interface WxConsumerMapper extends BasicMapper<Subscriber> {

    /**
     * 批量插入粉丝
     * @param subList
     * @throws Exception
     */
    void batchInsertSub(List<Subscriber> subList) throws Exception;

    /**
     * 插入更新粉丝信息
     * @param record
     * @return
     * @throws Exception
     */
    int insertOrUpdateSub(Subscriber record) throws Exception;

    /**
     * 根据ogid查询帐套
     * @param record
     * @return
     * @throws Exception
     */
    WxPlatform queryCorpByWxAppOrOgId(WxPlatform record) throws Exception;

    /**
     * 批量更新插入客户（消费者）
     * @param accntList
     * @throws Exception
     */
    void batchInsertOrUpdateAccount(List<Account> accntList) throws Exception;

    /**
     * 更新插入客户（消费者）
     * @param record
     * @return
     * @throws Exception
     */
    int insertOrUpdateAccount(Account record) throws Exception;

    /**
     * 插入更新微信客户（消费者）
     * @param record
     * @return
     * @throws Exception
     */
    int insertOrUpdateAccountWeixin(QidianAccntWeixin record) throws Exception;

    /**
     * 查询公众号下的所有粉丝
     * @param record
     * @return
     * @throws Exception
     */
    List<Subscriber> queryAllSubByOg(Subscriber record) throws Exception;

    /**
     * 更新微信粉丝关注状态
     * @param record
     * @throws Exception
     */
    void wxUpdateUnsubscribe(Subscriber record) throws Exception;

    /**
     * 解除微信公众号绑定
     *
     * @param record
     * @throws Exception
     */
    void unbindWxPlatform(WxPlatform record) throws Exception;

    /**
     * 更新公众号是否开启同步微信粉丝
     *
     * @param record
     * @throws Exception
     */
    void updateWxAutoTransStatus(WxPlatform record);

    /**
     * 更新客户唯一标识8位数字
     *
     * @author : LiQun
     * @param account 客户
     * @throws Exception 异常信息
     * @date : 上午11:04 2018/5/22
     */
    void wx2codeUpdate(Account account) throws Exception;

    /**
     * 根据客户openId及corpId查询客户信息
     *
     * @author : LiQun
     * @param account 客户
     * @return 客户信息
     * @throws Exception 异常
     * @date : 下午2:32 2018/5/22
     */
    Account queryAccountByOpenId(Account account) throws Exception;

    /**
     * 从redis中下载微信关注者信息
     * @param account
     */
    void updateWx2code(Account account);
}
